using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._NetworkDiagramTools._Configuration
{
    /// <summary>
    /// <para>Add Linear Dispatch Layout</para>
    /// <para>Adds the Linear Dispatch Layout algorithm to the list of layouts to be automatically chained at the end of the building of diagrams based on a given template. This tool also presets the Linear Dispatch Layout algorithm parameters for any diagram based on that template.</para>
    /// <para>将 Linear Dispatch Layout 算法添加到布局列表中，以便在基于给定模板构建逻辑示意图结束时自动链接。此工具还为基于该模板的任何逻辑示意图预设线性调度布局算法参数。</para>
    /// </summary>    
    [DisplayName("Add Linear Dispatch Layout")]
    public class AddLinearDispatchLayout : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public AddLinearDispatchLayout()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_utility_network">
        /// <para>Input Network</para>
        /// <para>The utility network or trace network containing the diagram template to modify.</para>
        /// <para>包含要修改的逻辑示意图模板的公共设施网络或追踪网络。</para>
        /// </param>
        /// <param name="_template_name">
        /// <para>Input Diagram Template</para>
        /// <para>The name of the diagram template to modify.</para>
        /// <para>要修改的逻辑示意图模板的名称。</para>
        /// </param>
        /// <param name="_is_active">
        /// <para>Active</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the layout algorithm will automatically execute when generating diagrams based on the specified template.
        ///   <bulletList>
        ///     <bullet_item>Checked—The added layout algorithm will automatically run during the generation of any diagram that is based on the Input Diagram Template parameter. This is the default.
        ///       <para>The parameter values specified for the layout algorithm are used to run the layout during diagram generation. They are also loaded by default when the algorithm is to be run on any diagram based on the input template.    </para>
        ///     </bullet_item><para/>
        ///     <bullet_item>Unchecked—All the parameter values currently specified for the added layout algorithm will be loaded by default when the algorithm is to be run on any diagram based on the input template.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定在基于指定模板生成逻辑示意图时是否自动执行布局算法。
        ///   <bulletList>
        /// <bullet_item>选中 - 添加的布局算法将在生成基于输入逻辑示意图模板参数的任何逻辑示意图期间自动运行。这是默认设置。
        ///       <para>为布局算法指定的参数值用于在逻辑示意图生成期间运行布局。默认情况下，当算法要在基于输入模板的任何逻辑示意图上运行时，也会加载它们。   </para>
        ///     </bullet_item><para/>
        ///     <bullet_item>未选中—默认情况下，当要在基于输入模板的任何逻辑示意图上运行该算法时，将加载当前为添加的布局算法指定的所有参数值。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// </param>
        public AddLinearDispatchLayout(object _in_utility_network, object _template_name, _is_active_value _is_active)
        {
            this._in_utility_network = _in_utility_network;
            this._template_name = _template_name;
            this._is_active = _is_active;
        }
        public override string ToolboxName => "Network Diagram Tools";

        public override string ToolName => "Add Linear Dispatch Layout";

        public override string CallName => "nd.AddLinearDispatchLayout";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_utility_network, _template_name, _is_active.GetGPValue(), _junction_placement_type.GetGPValue(), _is_unit_absolute.GetGPValue(), _maximum_shift_absolute, _maximum_shift_proportional, _minimum_shift_absolute, _minimum_shift_proportional, _iterations_number, _is_path_preserved.GetGPValue(), _are_leaves_moved.GetGPValue(), _are_leaves_expanded.GetGPValue(), _expand_shift_absolute, _expand_shift_proportional, _out_utility_network, _out_template_name];

        /// <summary>
        /// <para>Input Network</para>
        /// <para>The utility network or trace network containing the diagram template to modify.</para>
        /// <para>包含要修改的逻辑示意图模板的公共设施网络或追踪网络。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Network")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_utility_network { get; set; }


        /// <summary>
        /// <para>Input Diagram Template</para>
        /// <para>The name of the diagram template to modify.</para>
        /// <para>要修改的逻辑示意图模板的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Diagram Template")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _template_name { get; set; }


        /// <summary>
        /// <para>Active</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the layout algorithm will automatically execute when generating diagrams based on the specified template.
        ///   <bulletList>
        ///     <bullet_item>Checked—The added layout algorithm will automatically run during the generation of any diagram that is based on the Input Diagram Template parameter. This is the default.
        ///       <para>The parameter values specified for the layout algorithm are used to run the layout during diagram generation. They are also loaded by default when the algorithm is to be run on any diagram based on the input template.    </para>
        ///     </bullet_item><para/>
        ///     <bullet_item>Unchecked—All the parameter values currently specified for the added layout algorithm will be loaded by default when the algorithm is to be run on any diagram based on the input template.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定在基于指定模板生成逻辑示意图时是否自动执行布局算法。
        ///   <bulletList>
        /// <bullet_item>选中 - 添加的布局算法将在生成基于输入逻辑示意图模板参数的任何逻辑示意图期间自动运行。这是默认设置。
        ///       <para>为布局算法指定的参数值用于在逻辑示意图生成期间运行布局。默认情况下，当算法要在基于输入模板的任何逻辑示意图上运行时，也会加载它们。   </para>
        ///     </bullet_item><para/>
        ///     <bullet_item>未选中—默认情况下，当要在基于输入模板的任何逻辑示意图上运行该算法时，将加载当前为添加的布局算法指定的所有参数值。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Active")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _is_active_value _is_active { get; set; }

        public enum _is_active_value
        {
            /// <summary>
            /// <para>ACTIVE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ACTIVE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>INACTIVE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INACTIVE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Junctions Placement</para>
        /// <para><xdoc>
        ///   <para>Specifies how the junctions will be moved.</para>
        ///   <bulletList>
        ///     <bullet_item>Equal distance—All junctions with two connected edges will be moved so the distances between them and their two connected junctions are equal. This is the default.</bullet_item><para/>
        ///     <bullet_item>User define distance—All junctions with two connected edges will be moved so there is a minimum distance (Minimum Shift parameter value) between them and the other end of the edges to which they connect. This occurs at the end of the layout execution.</bullet_item><para/>
        ///     <bullet_item>Iterative distance—All junctions with two connected edges will be moved slightly according to the Number of Iterations and Maximum Shift parameter values.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定如何移动交汇点。</para>
        ///   <bulletList>
        ///     <bullet_item>相等距离—将移动具有两条连接边的所有交汇点，使其与其两个连接的交汇点之间的距离相等。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>用户定义距离 - 将移动具有两条连接边的所有交汇点，以便它们与它们所连接的边的另一端之间具有最小距离（最小移位参数值）。这发生在布局执行结束时。</bullet_item><para/>
        ///     <bullet_item>迭代距离 - 具有两条连接边的所有交汇点将根据迭代次数和最大偏移参数值略微移动。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Junctions Placement")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _junction_placement_type_value _junction_placement_type { get; set; } = _junction_placement_type_value._EQUAL_DISTANCE;

        public enum _junction_placement_type_value
        {
            /// <summary>
            /// <para>Equal distance</para>
            /// <para>Equal distance—All junctions with two connected edges will be moved so the distances between them and their two connected junctions are equal. This is the default.</para>
            /// <para>相等距离—将移动具有两条连接边的所有交汇点，使其与其两个连接的交汇点之间的距离相等。这是默认设置。</para>
            /// </summary>
            [Description("Equal distance")]
            [GPEnumValue("EQUAL_DISTANCE")]
            _EQUAL_DISTANCE,

            /// <summary>
            /// <para>User define distance</para>
            /// <para>User define distance—All junctions with two connected edges will be moved so there is a minimum distance (Minimum Shift parameter value) between them and the other end of the edges to which they connect. This occurs at the end of the layout execution.</para>
            /// <para>用户定义距离 - 将移动具有两条连接边的所有交汇点，以便它们与它们所连接的边的另一端之间具有最小距离（最小移位参数值）。这发生在布局执行结束时。</para>
            /// </summary>
            [Description("User define distance")]
            [GPEnumValue("USER_DEFINE_DISTANCE")]
            _USER_DEFINE_DISTANCE,

            /// <summary>
            /// <para>Iterative distance</para>
            /// <para>Iterative distance—All junctions with two connected edges will be moved slightly according to the Number of Iterations and Maximum Shift parameter values.</para>
            /// <para>迭代距离 - 具有两条连接边的所有交汇点将根据迭代次数和最大偏移参数值略微移动。</para>
            /// </summary>
            [Description("Iterative distance")]
            [GPEnumValue("ITERATIVE_DISTANCE")]
            _ITERATIVE_DISTANCE,

        }

        /// <summary>
        /// <para>Spacing values interpreted as absolute units in the diagram coordinate system</para>
        /// <para><xdoc>
        ///   <para>Specifies how parameters representing distances will be interpreted.
        ///   <bulletList>
        ///     <bullet_item>Checked—The layout algorithm will interpret any distance values as linear units.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The layout algorithm will interpret any distance values as relative units to an estimation of the average of the junction sizes in the current diagram extent. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定如何解释表示距离的参数。
        ///   <bulletList>
        ///     <bullet_item>选中 - 布局算法会将任何距离值解释为线性单位。</bullet_item><para/>
        ///     <bullet_item>未选中 - 布局算法会将任何距离值解释为当前逻辑示意图范围内交汇点大小平均值估计值的相对单位。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Spacing values interpreted as absolute units in the diagram coordinate system")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _is_unit_absolute_value _is_unit_absolute { get; set; } = _is_unit_absolute_value._false;

        public enum _is_unit_absolute_value
        {
            /// <summary>
            /// <para>ABSOLUTE_UNIT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ABSOLUTE_UNIT")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>PROPORTIONAL_UNIT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("PROPORTIONAL_UNIT")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Maximum Shift</para>
        /// <para>The maximum distance the junctions with two connections will be spaced from the junctions to which they connect. The default is 2 in the units of the diagram's coordinate system. At the time this distance is reached, junctions will not be moved during following iterations. This parameter can only be used with the Iterative distance junction placement type and absolute units.</para>
        /// <para>具有两个连接的交汇点与它们所连接的交汇点之间的最大距离。默认值为 2，以逻辑示意图坐标系为单位。在达到此距离时，在后续迭代期间不会移动交汇点。此参数只能与迭代距离交汇点放置类型和绝对单位一起使用。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Maximum Shift")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public string _maximum_shift_absolute { get; set; } = "2 Unknown";


        /// <summary>
        /// <para>Maximum Shift</para>
        /// <para>The maximum distance the junctions with two connections will be spaced from the junctions to which they connect. The default is 2. At the time this distance is reached, junctions will not be moved during following iterations. This parameter can only be used with the Iterative distance junction placement type and proportional units.</para>
        /// <para>具有两个连接的交汇点与它们所连接的交汇点之间的最大距离。默认值为 2。在达到此距离时，在后续迭代期间不会移动交汇点。此参数只能用于迭代距离交汇点放置类型和比例单位。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Maximum Shift")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _maximum_shift_proportional { get; set; } = 2;


        /// <summary>
        /// <para>Minimum Shift</para>
        /// <para>The minimum distance that will separate each junction with two connected edges from its two edge extremities after the layout execution. The default is 2 in the units of the diagram's coordinate system. When this parameter value is too large, the junctions with two connections are moved so the distances between each moved junction and its edge extremities are equal along the path defined by its two connected edges. This parameter can only be used with the User define distance junction placement type and absolute units.</para>
        /// <para>在布局执行后，将具有两条连接边的每个交汇点与其两个边端点分开的最小距离。默认值为 2，以逻辑示意图坐标系为单位。当此参数值过大时，将移动具有两个连接的交汇点，以便每个移动的交汇点与其边端之间的距离沿其两个连接边定义的路径相等。此参数只能与用户定义距离交汇点放置类型和绝对单位一起使用。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Minimum Shift")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public string _minimum_shift_absolute { get; set; } = "2 Unknown";


        /// <summary>
        /// <para>Minimum Shift</para>
        /// <para>The minimum distance that will separate each junction with two connected edges from its two edge extremities after the layout execution. The default is 2. When this parameter value is too large, the junctions with two connections are moved so the distances between each moved junction and its edge extremities are equal along the path defined by its two connected edges. This parameter is used with the User define distance junction placement type and proportional units.</para>
        /// <para>在布局执行后，将具有两条连接边的每个交汇点与其两个边端点分开的最小距离。默认值为 2。当此参数值过大时，将移动具有两个连接的交汇点，以便每个移动的交汇点与其边端之间的距离沿其两个连接边定义的路径相等。此参数与用户定义距离交汇点放置类型和比例单位一起使用。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Minimum Shift")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _minimum_shift_proportional { get; set; } = 2;


        /// <summary>
        /// <para>Number of Iterations</para>
        /// <para>The number of iterations to process. The default is 5. This parameter can only be used with the Iterative distance junction placement type.</para>
        /// <para>要处理的迭代次数。默认值为 5。此参数只能用于迭代距离交汇点放置类型。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Number of Iterations")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long _iterations_number { get; set; } = 5;


        /// <summary>
        /// <para>Preserve path</para>
        /// <para><xdoc>
        ///   <para>Specifies how vertices along edges will be processed.
        ///   <bulletList>
        ///     <bullet_item>Checked—All vertices along the connected edges will be preserved, and new vertices will be added at the moved junctions' original locations. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Vertices along edges will not be preserved.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定如何处理沿边的顶点。
        ///   <bulletList>
        ///     <bullet_item>选中—沿连接边的所有折点都将被保留，并将在移动交汇点的原始位置添加新折点。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 沿边的折点将不被保留。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Preserve path")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _is_path_preserved_value _is_path_preserved { get; set; } = _is_path_preserved_value._true;

        public enum _is_path_preserved_value
        {
            /// <summary>
            /// <para>PRESERVE_PATH</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("PRESERVE_PATH")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>IGNORE_PATH</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("IGNORE_PATH")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Move leaves</para>
        /// <para><xdoc>
        ///   <para>Specifies whether leaf junctions—junctions with one connection—will be moved during the algorithm execution.
        ///   <bulletList>
        ///     <bullet_item>Checked—Leaf junctions will be moved.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Leaf junctions will not be moved. This is the default unless the specified input network diagram is based on a template for which the Linear Dispatch Layout algorithm has been configured with another parameter value.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定在算法执行期间是否移动叶联结（具有一个连接的联结）。
        ///   <bulletList>
        ///     <bullet_item>选中 - 将移动叶交汇点。</bullet_item><para/>
        ///     <bullet_item>未选中 - 不会移动叶交汇点。这是默认设置，除非指定的输入网络逻辑示意图基于已为其配置了其他参数值的线性调度布局算法的模板。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Move leaves")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _are_leaves_moved_value _are_leaves_moved { get; set; } = _are_leaves_moved_value._false;

        public enum _are_leaves_moved_value
        {
            /// <summary>
            /// <para>MOVE_LEAVES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("MOVE_LEAVES")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>DO_NOT_MOVE_LEAVES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DO_NOT_MOVE_LEAVES")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Expand leaves</para>
        /// <para><xdoc>
        ///   <para>Specifies whether leaf junctions will be expanded.
        ///   <bulletList>
        ///     <bullet_item>Checked—Leaf junctions will be expanded. The Maximum Expand Shift parameter value specifies the maximum distance the leaf junctions can be expanded from the junctions to which they connect.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Leaf junctions will not be expanded. This is the default unless the specified input network diagram is based on a template for which the Linear Dispatch Layout algorithm has been configured with another parameter value.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否展开叶交汇点。
        ///   <bulletList>
        ///     <bullet_item>选中 - 叶交汇点将被展开。最大扩展移位参数值指定叶交汇点从其连接的交汇点可以展开的最大距离。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 叶交汇点将不展开。这是默认设置，除非指定的输入网络逻辑示意图基于已为其配置了其他参数值的线性调度布局算法的模板。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Expand leaves")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _are_leaves_expanded_value _are_leaves_expanded { get; set; } = _are_leaves_expanded_value._false;

        public enum _are_leaves_expanded_value
        {
            /// <summary>
            /// <para>EXPAND_LEAVES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EXPAND_LEAVES")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>DO_NOT_EXPAND_LEAVES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DO_NOT_EXPAND_LEAVES")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Maximum Expand Shift</para>
        /// <para>The maximum distance leaf junctions will be expanded from the junctions to which they connect. The default is 2 in the units of the diagram's coordinate system unless the specified input network diagram is based on a template for which the Linear Dispatch Layout algorithm has been configured with another parameter value. At the time this distance is reached, leaf junctions will not be moved during following iterations. This parameter can only be used with the Expand leaves parameter and absolute units.</para>
        /// <para>叶交汇点的最大距离将从它们所连接的交汇点展开。默认值为逻辑示意图坐标系单位的 2，除非指定的输入网络逻辑示意图基于已为其配置了 Linear Dispatch Layout 算法的另一个参数值的模板。在达到此距离时，叶交汇点在后续迭代期间不会移动。此参数只能与展开叶子参数和绝对单位一起使用。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Maximum Expand Shift")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public string _expand_shift_absolute { get; set; } = "2 Unknown";


        /// <summary>
        /// <para>Maximum Expand Shift</para>
        /// <para>The maximum distance the leaf junctions will be expanded from the junctions to which they connect. The default is 2 unless the specified input network diagram is based on a template for which the Linear Dispatch Layout algorithm has been configured with another parameter value. At the time this distance is reached, leaf junctions will not be moved during following iterations. This parameter can only be used with the Expand leaves parameter and proportional units.</para>
        /// <para>叶交界处将从它们所连接的交汇点扩展的最大距离。默认值为 2，除非指定的输入网络逻辑示意图基于已为其配置了 Linear Dispatch Layout 算法的另一个参数值的模板。在达到此距离时，叶交汇点在后续迭代期间不会移动。此参数只能与展开叶子参数和比例单位一起使用。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Maximum Expand Shift")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _expand_shift_proportional { get; set; } = 2;


        /// <summary>
        /// <para>Output Network</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Network")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_utility_network { get; set; }


        /// <summary>
        /// <para>Output Diagram Template</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Diagram Template")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_template_name { get; set; }


        public AddLinearDispatchLayout SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}